草庐IT

c++ - 单例 : C++ shared dll

全部标签

Android Activity 单例

我有一个名为MainActivity的Activity。此Activity启动一个通知,该通知具有打开此MainActivity的PendingIntent。因此,要关闭应用程序,我必须单击两次后退按钮。我想将Activity设置为单例。我试图将singleInstance或singleTask设置为manifest但这不起作用。 最佳答案 singleInstance和singleTask不推荐用于一般用途。尝试:android:launchMode="singleTop"更多信息请引用launchModesectionActiv

android - 如何在多个应用程序的库中运行单例(共享)服务?

我编写了一个在后台启动服务的库。它在所有应用程序中都能完美运行。为了减少RAM使用,我想避免为不同的应用程序运行多个服务。实际上,仅使用一种服务来完成工作就足够了。首先,我编写了一个AIDL文件来在应用程序/库之间进行IPC。将服务定义为具有签名权限的导出/启用。由于所有应用程序都是完全相同的服务,因此无法检查任何应用程序是否启动或关闭。在绑定(bind)服务以检查服务的条件时,由于BIND_AUTO_CREATE标志的性质,它总是创建和销毁自己的服务。这就是为什么无法从导出的服务中获取任何类型的信息(如果它确实已启动并正在运行)。然后,我尝试为库的list定义一个ContentPro

c++ - 单例:析构函数怎么会被调用两次?

我问了一个question关于几分钟前的单例实现,我从@LightnessRacesinOrbit那里得到了很好的回答。但我不明白为什么在下一个例子中,如果我在变量inst中实例化Singleton,它的析构函数调用了两次?#includeclassSingleton{public:~Singleton(){std::cout输出:construction!foo!destruction!destruction!Livedemo更准确地说,我理解为什么它被调用了两次。但是我无法理解如何如果在第一个析构函数之后类的实例被销毁,它会被调用两次?为什么没有异常(exception)?或者它没

C++:模板和单例模式

碰巧我需要臭名昭著的单例模式。更好的是,它发生了,所以我需要将臭名昭著的C++模板与该模式结合使用。所以,让我烦恼的是:templateclassPDatabaseTable{...staticPDatabaseTable&instance(){staticPDatabaseTablesingleton;returnsingleton;}...};这是实现应该在第一次使用时创建的单例的典型方法。现在,这里我们有一个静态变量singleton。由于可以从多个不同的模块调用instance()函数,因此问题是:对于任何给定类型T是否只有一个对象实例,或者每个模块实例化它自己的单例?

c++ - 做OOP状态机设计时如何避免单例?

我正在尝试自学编程。我相信大多数人都是以同样的方式开始的;制作小而杂乱的应用程序和游戏,以不那么简单的方式做简单的事情。最近,我一直在尝试通过编写一个稍微复杂一些的游戏来进行下一步,该游戏使用OOP设计来编写更好、更模块化的代码!我一直遇到的主要问题是我的主要StateManager(FSM)类的设计(在介绍/菜单/游戏/等屏幕状态之间切换)。我看了高低,真正看到的只有两种设计方法:使用switch/case语句+枚举在状态之间切换..制作一个单例FSM类来处理向/从vector插入/弹出状态。现在,我的问题是,switchcase语句非常重复和笨拙,这有点违背我使用这个项目自学OOP

c++ - 通过 C++ 中的静态实例的单例——进入源文件或头文件?

干杯,我在“ProgrammingGameAIbyExample”中遇到了这段代码:/*------------------MyClass.h--------------------*/#ifndefMY_SINGLETON#defineMY_SINGLETONclassMyClass{private://memberdataintm_iNum;//constructorisprivateMyClass(){}//copyctorandassignmentshouldbeprivateMyClass(constMyClass&);MyClass&operator=(constMyCla

java - 单例类

单例类和单例类有区别吗所有静态成员(即方法和属性)。我找不到任何“所有静态成员类”无法实现的实例与正确实现单例模式的类具有相同的功能?例如。java.lang.Runtime是一个合适的Singleton类,而java.lang.System有所有静态访问方法,只有一个私有(private)构造函数来避免外部构造。有谁知道为什么像Runtime这样的类是Singleton而不是像java.lang.System那样实现的。仅仅是因为它会是一个更简洁的设计(即更真实地模仿一个对象)还是这里有一些性能优势? 最佳答案 是的,有区别-单例

c++ - 何时用单例替换全局 std::unique_ptr

一位同事坚持对所有全局指针变量使用Meyer的Singleton,因为“不能保证全局unique_ptr的构造不会抛出”。所以不是:#includestd::unique_ptrptr(nullptr);//Apparentlythisisn'tsafe.intmain(/*blah*/){ptr.reset(newFoo());}我们现在有unique_ptrsingleton{try{staticunique_ptrptr();returnptr;}catch(...){std::cerr();}intmain(){}对我来说,这似乎是一种寻找问题的解决方案。他有道理吗?

c++ - 单例 - protected 与私有(private)构造函数

在设计单例时,为什么构造函数是protected而不是private?这是基于我在网上看到的内容。我们想控制该类的实例数量,这很公平,但为什么要protected?private不也可以解决这个问题吗? 最佳答案 首先,在绝大多数情况下,单例不是一个好主意(Why?)。与全局变量相比,使用它们甚至更少。这样子类就可以实例化Singleton基类,在它自己的GetInstance()类型函数中将其作为自身的一部分返回。这就是它在设计模式中完成的原因。因此,如果您计划从Singleton继承,它才真正相关。GoF说,(第130页,子类化

c++ - 如何在类图中显示单例关系

如果一个类包含指向单例类的指针,它可以是聚合吗?根据我的理解,它不可能是has-a关系,因为该类不会生成单例类的实例,它只是像关联关系一样使用它。 最佳答案 标题并没有像写的那样100%完整。有单例类,但没有真正的单例关系。任何关系都可以在任一端分配一个重数,所以如果你指的是一对一关系,你所做的就是在两端分配多个1。类也可以有多重性。你不会经常看到它被使用,除了在一种情况下:单例。当谈到A具有或包含或引用B时,UML中基本上存在三个级别的紧密性。聚合(未填充的菱形箭头)表示包含不是独占的,并且包含的​​对象不与包含对象共享其生命周期